package cn.tedu.test.luban.demo.condition;

import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotatedTypeMetadata;

/**
 * 条件,除了在windows系统环境下
 */
public class OnOtherOSCondition implements Condition {
    /**
     * 当条件注解,使用当前条件判断时,最终条件是否满足,取决于当前方法返回值
     * @param context 条件上下文,获取容器环境\系统环境
     * @param metadata 条件注解所在的类的反射数据
     * @return
     */
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        // 利用matches方法进行判断 当前系统是否是Windows,是返回true 否返回false
        Environment environment = context.getEnvironment();
        // 在os.name环境变量中,保存当前操作系统的名称
        String property = environment.getProperty("os.name");
        if(property.contains("Windows")){
            return false;
        }

        return true;
    }
}


